# 导包
from time import sleep

from selenium import webdriver
from selenium.webdriver.ie.webdriver import WebDriver
from selenium.webdriver.support.wait import WebDriverWait

# 获取浏览器驱动对象
driver = webdriver.Chrome()
# 打开url
driver.get("https://demo.ruoyi.vip/login")

"""
    目标：显式等待使用
    操作：
        1. 导包 WebDriverWait()类
        2. 实例化WebDriverWait()类并调用until(method)方法
            method: 匿名函数
            lambda x:x.find_element_by_id()
    
    需求：
        定位用户名输入admin
    
    参数：
        timeout: 超时时间    
        poll_frequency: 访问频率，默认0.5秒找一次元素    
        x: x为driver，它是WebDriverWait类讲出入的driver赋值给类self._driver，until方法调用了self._driver;
    
    提示：
        1. WebDriverWait(driver, timeout=10, poll_frequency=0.5).until(lambda x:x.find_element_by_id("#user")) 
            返回的是一个元素。
    
    显式等待与隐式等待
        1. 显式等待：针对单个元素生效。
        2. 隐式等待：针对全局元素生效。
    
"""
# 实例化WebDriverWait()并调用until方法
# 注意：调用until方法返回的一定是一个元素
WebDriverWait(driver, timeout=10, poll_frequency=0.5).until(lambda x:x.find_element_by_id("#user")).send_keys("admin")
# 注意：此时username还不是元素，只有代码运行起来才是元素
# username.send_keys("admin")

# 暂停3秒
sleep(3)

# 关闭浏览器驱动对象
driver.close()
